let aa: string = '123'
//普通声明

//也可以使用es6的字符串模板
let str: string = `dddd${aa}`

// let createdBoolean: boolean = new Boolean(1)
let createdBoolean1: Boolean = new Boolean(1)
//这样会报错 应为事实上 new Boolean() 返回的是一个 Boolean 对象

let booleand: boolean = true //可以直接使用布尔值

let booleand2: boolean = Boolean(1) //也可以通过函数返回布尔值

// let notANumber: number = NaN;//Nan
// let num: number = 1;//普通数字
// let infinityNumber: number = Infinity;//无穷大
// let decimal: number = 6;//十进制
// let hex: number = 0xf00d;//十六进制
// let binary: number = 0b1010;//二进制
// let octal: number = 0o744;//八进制s

/* 
Object类型是所有Object类的实例的类型。 由以下两个接口来定义：
Object 接口定义了 Object.prototype 原型对象上的属性；
ObjectConstructor 接口定义了 Object 类的属性， 如上面提到的 Object.create()。
这个类型是跟原型链有关的原型链顶层就是Object，所以值类型和引用类型最终都指向Object，所以他包含所有类型。
2.object
object 代表所有非值类型的类型，例如 数组 对象 函数等，常用于泛型约束 
*/

let o: object = {} //正确
let o1: object = [] //正确
let o2: object = () => 123 //正确
// let b:object = '123' //错误
// let c:object = 123 //错误

// let a1: {} = {name:1} //正确
// let a2: {} =  () => 123//正确
// let a3: {} = 123//正确
